Prof(a) Débora  C.  M.  Saade,  D.Sc.

                                                                                                                                                      TESTES

Disciplina de Redes de Computadores 2017-2


Conceitos básicos

Como estamos trabalhando com o Linux/Ubuntu não se deve esquecer que para entrar em uma pasta você terá que digitar "cd " e para retornar ou sair da pasta para o diretório raiz você deve digitar "cd ..". Se você já entendeu isso, precisamos apresentar o caminho no qual você encontrará os arquivos do exemplo1 e do exemplo2 para realizar as simulações. Você não pode esquecer que todos os comandos são em letras mínusculas e que para limpar a tela você deve usar o comando "clear".


observação 1: primeiro vamos realizar o download do Exercicios.zip que contém os exemplos 1 e 2 que serão simulados. Favor clicar em Exercícios.zip

observação 2: vá na pasta download e copie o arquivo Exercicios.zip, depois descompacte-o dentro da "Pasta Pessoal".



Vamos trabalhar e simular o exemplo1


Primeiro passo: entrar na tela TERMINAL, para quem não trabalha com o linux, basta apertar as três teclas simultaneamente: CTRL+ALT+T. Também pode na parte de busca digitar terminal, como pode ser verificado na figura.



Segundo passo: vamos entrar na pasta que contém o exemplo1 que será analisado e simulado pela turma. Dessa forma, favor digitar: cd Exercicios e depois digitar: cd Exemplo1. Não esquecer que as primeiras letras das pastas são sempre em letras maíusculas para diferenciar dos arquivos em que todas as letras são mínusculas.



Terceiro passo: ir no icone em formato de ARQUIVO e procurar entrar na pasta Exemplo1, como já apresentado anteriormente na descrição dos projetos. Nessa pasta você deve clicar com o botão direito do mouse em cima do arquivo "exemplo1.tcl", procurando abrí-lo com o editor de texto para analisarmos o código escrito.

Quarto passo: reconhecer as linhas do arquivo "exemplo1.tcl" que alteram a taxa de transmissão do nó N0 e como alterá-la.

       # Criando um tráfego CBR e concetando ao udp0

       # Portanto o tráfego gerado é = 8bits * 1000bytes/interval - se a variável interval é 0.01s, teremos 8000/0,01 = 800k bits/s - menor que 1Mbit/s do canal, ou seja, sem perdas de pacotes. Porém, se tivermos a variável interval com 0,006, teremos 8000/0,006 = 1,33M bits/s, sendo o tráfego gerado maior que 1Mbit/s do canal, ou seja, vai gerar perdas de pacotes.

        set cbr0 [new Application/Traffic/CBR]
        $cbr0 set packetSize_ 1000
        $cbr0 set interval_ 0.0051
        $cbr0 attach-agent $udp0


Quinto passo: reconhecer as linhas do arquivo "exemplo1.tcl" que executam os programas GAWK, NAM e o XGRAPH.

       #Executar gawk para gerar informações de vazão, atrasos e pacotes retiradas do arquivo de TRACE VAPkt que serão mostradas na tela.

        exec gawk -f resultados-exemplo1.awk out-VAPkt.tr &

       #Executar Xgraph no arquivo de TRACE. Visualizar o gráfico da vazão do UDP ao longo do tempo.

        exec xgraph out-xgraph.tr -geometry 700x400 &

       #Executar NAM no arquivo de TRACE

        exec nam out.nam &


Sexto passo: voltar ao TERMINAL no caminho $/ Exercicios/Exemplo1 e digitar "ns exemplo1.tcl".


Sétimo passo: após verificar todas as informações geradas com o NAM, o GAWK e o XGRAPH, voltar ao icone ARQUIVO e entrar na pasta Exemplo1 para verificar os arquivos criados.



Oitavo passo: com o editor de texto, você deve abrir o arquivo "out-VAPkt.tr" e verificar seu formato com as informações já passadas no curso de NS2.




Nono passo: abrir o arquivo "resultados-exemplo1.awk" e procurar entender a estrutura de código que lê o arquivo "out-VAPkt.tr".



Décimo passo: abrir o arquivo "exemplo1.tcl" e alterar o valor da variável "interval" para 0.01 como apresentado no "Terceiro passo" destes testes.



Décimo Primeiro passo: ir ao TERMINAL e digitar "ns exemplo1.tcl" e observar as alterações nas informações geradas em todos os programas: XGRAPH, NAM e GAWK. Dessa forma, observamos que o gargalo é retirado na transmissão da informação.




Décimo Segundo passo: vamos verificar que o buffer padrão do NS2 é 50 pacotes, para isso abra o arquivo "exemplo1.tcl" com um editor e volte a variável interval para 0,0051; como inicialmente testado (ver Terceiro Passo);

Depois entre no TERMINAL e digite "ns exemplo1.tcl".

Verifique e anote os pacotes recebidos, pacotes perdidos e atraso.

Volte ao editor e coloque a seguinte linha $ns queue-limit $n0 $n1 50 que vai definir o tamanho do buffer em 50 bytes, coloque no lugar indicado abaixo, e depois, volte em TERMINAL e digite "ns exemplo1.tcl" .

       #Crinado um link duplex entre os nós. O DropTail significa que o primeiro a entrar e o primeiro a sair ou ser descartado se houver gargalo.

        $ns duplex-link $n0 $n1 1Mb 10ms DropTail

       #Criando um agente UDP e concetando ao nó N0

        set udp0 [new Agent/UDP]

        $ns attach-agent $n0 $udp0


       # Inserir aqui:

       $ns queue-limit $n0 $n1 50

       # Criando um tráfego CBR e concetando ao udp0



Agora você deve ir ao TERMINAL e executar "ns exemplo1.tcl". Você verá que os resultados anotados se repetem.

Agora volte no arquivo "exemplo1.tcl" e com um editor de texto, altere o tamanho do buffer para 75 e execute "ns exemplo1.tcl" em TERMINAL.

O que ocorreu com os valores anotados?

OBS: Nosso algoritmo não foi criado para buffer maior que 80, portanto, favor evitar para não gerar erros de leitura.



        ###############         ################         #################         ##############         ##############         ##############         ##############         ##############        


Vamos trabalhar e simular o exemplo2


Primeiro passo: entrar na tela TERMINAL e buscar o caminho que contém o exemplo2 que será analisado e simulado pela turma. Dessa forma, favor digitar: cd Exercicios e depois digitar: cd Exemplo2. Não esquecer que as primeiras letras das pastas são sempre em letras maíusculas para diferenciar dos arquivos em que todas as letras são mínusculas.

        Observação: caso ainda esteja na pasta onde executou o exemplo1, basta primeiro digitar "cd ..", voltando para a pasta Exercicios e depois digitar: cd Exemplo2.

Dentro dessa pasta vamos executar o "exemplo2.tcl", basta digitar: ns exemplo2.tcl.



Segundo passo: verificar e anotar os dados fornecidos na tela após executar o comando "ns exemplo2.tcl", para os links nó N0 ao N2 (TCP/FTP), link nó N1 ao N2 (UDP/CBR) e do gargalo N2 ao N3. Vale destacar que o primeiro teste considera o TCP no modo Tahoe, pois esse é o padrão do simulador se o usuário não indica que modo quer operar o TCP.



OBS: observar que são transmitidos 1040 bytes, sendo 1000 bytes relacionados a informação e 40 bytes relacionado ao ACK, como pode ser visto nos arquivos Trace do TCP (out-02.tr ou out-23.tr).


Terceiro passo: abrir o arquivo out-all.tr que contém todas as informações juntas de todos os links para observar o envio e recebimento dos ACK(40 bytes) da origem nó N0 até o nó N3, passando pelo nó N2. Pode ser visto que no início o nó N0 envia um pacote TCP para o nó N2 que transfere para o nó N3, esse por sua vez responde com um ACK.



Quarto passo: ir no icone em formato de ARQUIVO e procurar entrar na pasta Exemplo2, como já apresentado anteriormente na descrição dos projetos. Nessa pasta você deve clicar com o botão direito do mouse em cima do arquivo "exemplo2.tcl", procurando abrí-lo com o editor de texto para analisarmos o código escrito.


Quinto passo: reconhecer as linhas do arquivo "exemplo2.tcl" que alteram a forma de trabalho do TCP e entender como alterá-la. Abaixo como elas aparecem e devem ser alteradas no arquivo.


        #Ajustando a conecção TCP, nessa parte você pode alterar a forma do TCP operar, ou seja, se na linha "set tcp [new Agent/TCP]" estiver ajustado desse modo teremos o TCP do tipo Tahoe, se a linha for

       #alterada para set tcp [new Agent/TCP/Reno] teremos o segundo tipo de TCP que no caso é Reno e por último se a linha for alterada para set tcp [new Agent/TCP/Vegas] teremos o TCP Vegas operando na

       #simulação.


        set tcp [new Agent/TCP]     (Alterar aqui !!!!!!!)

        $ns attach-agent $n0 $tcp

        set sink [new Agent/TCPSink]

        $ns attach-agent $n3 $sink

        $ns connect $tcp $sink

        $tcp set fid_ 1


Sexto passo: reconhecer as linhas do arquivo "exemplo2.tcl" que executam os programas GAWK, NAM e o XGRAPH.



       #Executa os dados trafegados entre os nó 0 e o nó 2 (Tráfego TCP antes do gargalo)

        exec gawk -f resultados-exemplo2-link02.awk out-02.tr &

        #Executa os dados trafegados entre os nó 1 e o nó 2 (Tráfego UDP antes do gargalo)

        exec gawk -f resultados-exemplo2-link12.awk out-12.tr &

        #Executa os dados trafegados entre o nó 2 (gargalo) e o nó 3 (Tráfego UDP e TCP no gargalo)

        exec gawk -f resultados-exemplo2-link23.awk out-23.tr &

        #Executa os gráficos de dados trafegados entre os nó 2 (gargalo) e o nó 3 (Tráfego UDP e TCP no gargalo)

        exec xgraph udp-n3.tr tcp-n3.tr -geometry 700x400 &

        #Executa o NAM para apresentar os resultados na tela dos passos da simulação

        exec nam out.nam &

Sétimo passo: Alterar a linha de software no "exemplo2.tcl" e salvá-lo, para simular o TCP na versão Reno, logo em seguida executar o comando "ns exemplo2.tcl" na tela TERMINAL.



OBS: observar que são transmitidos 1040 bytes, sendo 1000 bytes relacionados a informação e 40 bytes relacionado ao ACK, como pode ser visto nos arquivos Trace do TCP (out-02.tr ou out-23.tr).

Oitavo passo: Alterar a linha de software no "exemplo2.tcl" e salvá-lo, para simular o TCP na versão Vegas, logo em seguida executar o comando "ns exemplo2.tcl" na tela TERMINAL.



OBS: observar que são transmitidos 1040 bytes, sendo 1000 bytes relacionados a informação e 40 bytes relacionado ao ACK, como pode ser visto nos arquivos Trace do TCP (out-02.tr ou out-23.tr).


Com todas as três simulações, retornar a primeira página (Home) e ler sobre os três tipos de TCP. Depois tentar relacionar os textos apresentados com os resultados da simulação e no final responder qual dos três você usária nessa transmissão, informando seus motivos.



Sugestões de melhorias para futuras versões do trabalho



(1) Desenvolver no exemplo2 uma transmissão nos dois sentidos ao mesmo tempo (full-duplex).

(2) Melhorar os arquivos awk relacionados as leituras de informações dos traces do tráfego TCP, pois os atuais foram feitos muito rapidamente e não consideram entre outras coisas a vazão gerada pelos ACKs (40 bytes).

(3) Realizar uma depuração detalhada nas linhas de códigos para encontrar pequenas falhas que ainda geram erros durante a simulação como aparece nas figuras, vale destacar que esses pequenos erros não estão comprometendo as simulações.

(4) Criar variáveis mais claras e detalhadas nos programas.

(5) Desenvolver os exemplos com taxas de transmissão da ordem de Gbits.

(6) Simular o TCP/Vegas com mais tempo, ou seja, ampliar a janela de testes para 15segundos ou mais para verificar se a vazão aumenta.

(7) Por último, mas não menos importante, procurar acertar o HTML para que ele se ajuste automaticamente em qualquer tamanho de tela sem alterar o formato das páginas.